package srv;

import java.util.ArrayList;
import java.util.List;

import beans.ClienteBean;
import beans.CotizacionBean;
import beans.ItemCotizacionBean;
import beans.PedidoVentaBean;
import beans.RodamientoBean;
import dao.HibernateCotizacionBeanDAO;
import entities.ClienteEntity;
import entities.CotizacionEntity;
import entities.ItemCotizacionEntity;
import entities.OficinaVentaEntity;
import entities.PedidoVentaEntity;
import entities.RodamientoEntity;

public class CotizacionSRV 
{
	private static HibernateCotizacionBeanDAO dao;
	private static CotizacionSRV instancia;
	
	static {
			dao = HibernateCotizacionBeanDAO.getInstancia();
			}
	
	public static CotizacionSRV getInstancia()
	{
		if (instancia == null)
		{
			instancia = new CotizacionSRV();
		}
		return instancia;
	}
	
	public CotizacionEntity pasadoDesdeBean (CotizacionBean cotizacionBean )
	{
		CotizacionEntity cotizacion = new CotizacionEntity();
		
		ClienteEntity cliente = ClienteSRV.getInstancia().pasadoDesdeBean( cotizacionBean.getCliente() );
		cotizacion.setCliente(cliente);
		
		cotizacion.setEstadoCotizacion( cotizacionBean.getEstadoCotizacion());
		cotizacion.setFechaRemisionAlCliente( cotizacionBean.getFechaRemisionAlCliente());
		cotizacion.setFechaValidez( cotizacionBean.getFechaValidez());
		cotizacion.setId( cotizacionBean.getId());
		
		List<ItemCotizacionEntity> items = new ArrayList<ItemCotizacionEntity>();
		for( ItemCotizacionBean itemCotizacionBean: cotizacionBean.getItems() )
		{
			ItemCotizacionEntity item = new ItemCotizacionEntity();
			
			item.setCantidad( itemCotizacionBean.getCantidad());
			item.setEstadoItem( itemCotizacionBean.getEstadoItem());
			item.setPrecioCotizacion( itemCotizacionBean.getPrecioCotizacion());
			
			RodamientoEntity rodamiento = RodamientoSRV.getInstancia().pasadoDesdeBean( itemCotizacionBean.getRodamiento());
			item.setRodamiento( rodamiento );
			
			items.add( item );
		}
		
		cotizacion.setItems(items);
		
		/*
		OficinaVentaEntity oficinaVenta = OficinaVentaSRV.getInstancia().pasadoDesdeBean( cotizacionBean.getOficinaVenta());
		cotizacion.setOficinaVenta(oficinaVenta);
		*/
		PedidoVentaEntity pedidoVenta = PedidoVentaSRV.getInstancia().pasadoDesdeBean( cotizacionBean.getPedidoVenta());
		cotizacion.setPedidoVenta( pedidoVenta );
		
		return cotizacion;
	}
	
	public CotizacionBean pasadoDesdeEntity (CotizacionEntity cotizacion )
	{
		CotizacionBean cotizacionBean = new CotizacionBean();
		
		ClienteBean cliente = ClienteSRV.getInstancia().pasadoDesdeEntity( cotizacion.getCliente() );
		cotizacionBean.setCliente(cliente);
		
		cotizacionBean.setEstadoCotizacion( cotizacion.getEstadoCotizacion());
		cotizacionBean.setFechaRemisionAlCliente( cotizacion.getFechaRemisionAlCliente());
		cotizacionBean.setFechaValidez( cotizacion.getFechaValidez());
		cotizacionBean.setId( cotizacion.getId());
		
		List<ItemCotizacionBean> items = new ArrayList<ItemCotizacionBean>();
		for( ItemCotizacionEntity itemCotizacionEntity: cotizacion.getItems() )
		{
			ItemCotizacionBean item = new ItemCotizacionBean();
			
			item.setCantidad( itemCotizacionEntity.getCantidad());
			item.setEstadoItem( itemCotizacionEntity.getEstadoItem());
			item.setPrecioCotizacion( itemCotizacionEntity.getPrecioCotizacion());
			
			RodamientoBean rodamiento = RodamientoSRV.getInstancia().pasadoDesdeEntity( itemCotizacionEntity.getRodamiento());
			item.setRodamiento( rodamiento );
			
			items.add( item );
		}
		
		cotizacionBean.setItems(items);
		
		/*
		OficinaVentaEntity oficinaVenta = OficinaVentaSRV.getInstancia().pasadoDesdeBean( cotizacionBean.getOficinaVenta());
		cotizacion.setOficinaVenta(oficinaVenta);
		*/
		PedidoVentaBean pedidoVenta = PedidoVentaSRV.getInstancia().pasadoDesdeEntity( cotizacion.getPedidoVenta());
		cotizacionBean.setPedidoVenta( pedidoVenta );
		
		return cotizacionBean;
	}
	
	public void registrarCotizacion( CotizacionBean cotizacion )
	{
		CotizacionEntity cot = this.pasadoDesdeBean(cotizacion); 
		dao.registrarCotizacion( cot );
	}
	
	public boolean aprobarCotizacion( CotizacionBean cotizacion )
	{
		CotizacionEntity cot = this.pasadoDesdeBean(cotizacion);
		return dao.aprobarCotizacion( cot);
	}
}
